package net.siufung.boot.redis.service;

import java.util.Collection;
import java.util.concurrent.TimeUnit;

/**
 * @author 陈建峰
 * @date 2022/9/28 9:49 上午
 * @since V1.0.0
 */
public interface IRedisClientService {


    /**
     * 删除key
     * @param key key
     * @return Boolean
     */
    Boolean delete(String key);

    /**
     * 批量删除key
     * @param keys keys
     * @return Long
     */
    Long delete(Collection<String> keys);

    /**
     * 是否存在key
     * @param key key
     * @return Boolean
     */
    Boolean exists(String key);

    /**
     * 设置指定 key 的值
     * @param key key
     * @param value value
     */
    void set(String key, Object value);

    /**
     * 只有在 key 不存在时设置 key 的值
     * @param key key
     * @param value value
     * @return 之前已经存在返回false,不存在返回true
     */
    Boolean setIfAbsent(String key, String value);

    /**
     * 设置过期时间
     * @param key key
     * @param timeout 时间
     * @param unit 单位
     * @return Boolean
     */
    Boolean setExpire(String key, long timeout, TimeUnit unit);

    /**
     * 获取指定 key 的值
     * @param key key
     * @return Object
     */
    Object get(String key);
}
